import 'dart:async';

/// 该类可以帮助你设置一个bool值的反转值，等待一段时间后自动重置成该bool值的初始值
class ResetBool {
  /// 初始值，即固定会重置到该值的值
  final bool resetBool;

  /// 重置等待时长，默认50毫秒，用户可自行设置
  final int milliseconds;
  bool _resetBool = false;
  bool _tempBool = false;
  Timer? _timer;

  ResetBool({this.resetBool = false, this.milliseconds = 50}) {
    _resetBool = resetBool;
  }

  /// 反转，例如你初始值设置的true，调该方法，值就会置为false
  void reverse() {
    _tempBool = !_resetBool;
    if (_timer != null) {
      _timer!.cancel();
      _timer = null;
    }
    _timer = Timer.periodic(
      Duration(milliseconds: milliseconds),
      (timer) {
        _tempBool = _resetBool;
        timer.cancel();
      },
    );
  }

  /// 获取当前的bool值状态
  bool get() {
    return _tempBool;
  }
}
